#ifndef __DIFFICULTYFACTOR_H__
#define __DIFFICULTYFACTOR_H__

/**
 * Abstract Class
 */

class DifficultyFactor
{
protected:

	double 	_weight;
	int		_currentDifficulty;

	//===== FUNCTIONS =====
	int		getDifficultyLevel(int difficulty);	// Get difficulty level using weight
	bool	updateDifficulty(int difficulty);	// Update the difficulty if possible

public:

	//===== CONSTRUCTOR =====
	DifficultyFactor(double weight, int difficulty); // Default constructor

	//===== DESTRUCTOR =====
	virtual ~DifficultyFactor(void);

	//===== FUNCTIONS =====
	virtual void	update(int difficulty) = 0;			// To be overrided

	//===== GETTERS =====
	double			getWeight() { return _weight; }
	int				getCurrentDifficulty() { return _currentDifficulty; }

	//===== SETTERS =====
	void			setWeight(int weight) { _weight = weight; }



};

#endif // __DIFFICULTYFACTOR_H__
